package com.easylinkin.linkappapi.premeeting.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.easylinkin.linkappapi.common.model.RequestModel;
import com.easylinkin.linkappapi.premeeting.entity.RailPreMeeting;
import com.easylinkin.linkappapi.premeeting.vo.RailPreMeetingQueryVo;
import com.easylinkin.linkappapi.premeeting.vo.RailPreMeetingVo;
import com.easylinkin.linkappapi.premeeting.vo.RailPreMeetingCalendarVo;
import com.easylinkin.linkappapi.premeeting.vo.RailPreMeetingCalendarQueryVo;
import com.easylinkin.linkappapi.premeeting.vo.RailPreMeetingGridSwitchVo;
import com.fasterxml.jackson.core.JsonProcessingException;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 班前会表 服务类
 * </p>
 *
 * @author zl
 * @since 2025-06-30
 */
public interface RailPreMeetingService extends IService<RailPreMeeting> {

    IPage<RailPreMeetingVo> queryListByPage(RequestModel<RailPreMeetingQueryVo> requestModel);

    /**
     * 增加
     * @param railPreMeeting
     */
    void insert(RailPreMeeting railPreMeeting);

    /**
     * 根据id编辑
     * @param railPreMeeting
     */
    void updateOne(RailPreMeeting railPreMeeting);

    /**
     * @Description: 删除班前会（包含批量删除）
     * @author zl
     * @date 2025-06-30
     */
    void delBatch(List<Long> ids);

    /**
     * @Description: 根据id查询班前会详情
     * @author zl
     * @date 2025-06-30
     */
    RailPreMeetingVo findById(String id);

    /**
     * @Description: 获取班前会日历数据
     * @author kyf
     * @date 2025-06-30
     */
    List<RailPreMeetingCalendarVo> getCalendarData(RailPreMeetingCalendarQueryVo queryVo);

    /**
     * @Description: 获取网格点切换数据（显示所有网格点及其数据状态）
     * @author kyf
     * @date 2025-06-30
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 网格点列表及数据状态
     */
    List<RailPreMeetingGridSwitchVo> getGridSwitchData(Date startTime, Date endTime);

    /**
     * @Description: 获取班前会按年月导出数据
     * @author kyf
     * @date 2025-06-30
     * @param yearMonth 年月字符串（格式：2025-01）
     * @return 导出数据Map（包含项目名称、时间、班前会列表等）
     */
    Map<String, Object> getExportDataByYearMonth(String yearMonth) throws JsonProcessingException;
}
